package com.typ.blog.controller;

import com.github.pagehelper.PageInfo;
import com.typ.blog.entity.Classification;
import com.typ.blog.service.ClassificationService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.Objects;

/**
 * 路径：com.typ.blog.controller.ClassificationController.java
 * 类名：ClassificationController.java
 * 功能：文章分类、类型
 * 备注：
 * 创建人：typ
 * 创建时间：2019/12/1 19:22
 * 修改人：
 * 修改备注：
 * 修改时间：
 */
@Slf4j
@Controller
public class ClassificationController {

    @Autowired
    private ClassificationService classificationService;

    /**
     * 方法名：typeList
     * 功能：获取文章分类列表
     * 描述：
     * 创建人：typ
     * 创建时间：2019/12/1 14:43
     * 修改人：
     * 修改描述：
     * 修改时间：
     */
    @RequestMapping("typeList")
    public String typeList(Model model,
                           @RequestParam(required = false, defaultValue = "1") Integer pageNum,
                           @RequestParam(required = false, defaultValue = "10") Integer pageSize,
                           @RequestParam(required = false, defaultValue = "") String search) {
        PageInfo<Classification> articleList = classificationService.list(2, pageNum, pageSize, search);
        model.addAttribute("tList", articleList);
        model.addAttribute("search", search);
        model.addAttribute("active", "typeList");
        return "admin/typeList";
    }

    /**
     * 方法名：classifyList
     * 功能：获取文章类型列表
     * 描述：
     * 创建人：typ
     * 创建时间：2019/12/1 14:43
     * 修改人：
     * 修改描述：
     * 修改时间：
     */
    @RequestMapping("classifyList")
    public String classifyList(Model model,
                               @RequestParam(required = false, defaultValue = "1") Integer pageNum,
                               @RequestParam(required = false, defaultValue = "10") Integer pageSize,
                               @RequestParam(required = false, defaultValue = "") String search) {
        PageInfo<Classification> articleList = classificationService.list(1, pageNum, pageSize, search);
        model.addAttribute("cList", articleList);
        model.addAttribute("search", search);
        model.addAttribute("active", "classifyList");
        return "admin/classifyList";
    }

    /**
     * 方法名：save
     * 功能：添加、修改
     * 描述：
     * 创建人：typ
     * 创建时间：2019/12/1 19:58
     * 修改人：
     * 修改描述：
     * 修改时间：
     */
    @RequestMapping("classSave")
    public String classSave(Classification classification, Model model) {
        int rows = classificationService.save(classification);
        if (Objects.equals(1, classification.getType())) {
            model.addAttribute("active", "classifyList");
            return "redirect:classifyList";
        } else {
            model.addAttribute("active", "typeList");
            return "redirect:typeList";
        }
    }

    /**
     * 方法名：typeDel
     * 功能：删除
     * 描述：
     * 创建人：typ
     * 创建时间：2019/12/1 19:58
     * 修改人：
     * 修改描述：
     * 修改时间：
     */
    @RequestMapping("typeDel")
    public String typeDel(String id, Model model) {
        Classification classification = new Classification();
        classification.setId(id);
        classification.setType(2);
        int rows = classificationService.del(classification);
        model.addAttribute("active", "typeList");
        return "redirect:typeList";
    }

    /**
     * 方法名：classifyDel
     * 功能：删除
     * 描述：
     * 创建人：typ
     * 创建时间：2019/12/1 19:58
     * 修改人：
     * 修改描述：
     * 修改时间：
     */
    @RequestMapping("classifyDel")
    public String classifyDel(String id, Model model) {
        Classification classification = new Classification();
        classification.setId(id);
        classification.setType(1);
        int rows = classificationService.del(classification);
        model.addAttribute("active", "classifyList");
        return "redirect:classifyList";
    }

}
